package cn.wolfcode.wolf2w.job;

import cn.wolfcode.wolf2w.domain.UserFavor;
import cn.wolfcode.wolf2w.redis.service.IStatisVORedisService;
import cn.wolfcode.wolf2w.service.IStrategyService;
import cn.wolfcode.wolf2w.service.IUserFavorService;
import cn.wolfcode.wolf2w.vo.StrategyStatisVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public class RedisDataPersistJob {

    /**
     * 将redis的数据 ---> mongodb数据库  实现数据落地
     */

    @Autowired
    private IStatisVORedisService statisVORedisService;

    @Autowired
    private IStrategyService strategyService;

    @Autowired
    private IUserFavorService userFavorService;

    // Scheduled: 安排; 为…安排时间; 预定; 列入，收进(正式目录、清单等中);
    // cron表达式:  Cron表达式是一个字符串，包括6~7个时间元素，在定时任务中可以用于指定任务的执行时间。
    @Scheduled(cron="0/40 * * * * ?")
    public void doWork() {
        System.out.println("---------Redis数据持久化Starting------------");
        // 拿到所有redis中vo
        List<StrategyStatisVo> vos = statisVORedisService.getAllStrategyStatisVo();
        for (StrategyStatisVo vo : vos) {
            // 调用
            // 持久化攻略的统计数据
            strategyService.updateStrategyStatisByVo(vo);
        }

        List<UserFavor> allUserFavor = statisVORedisService.getAllRedisUserFavor();
        for (UserFavor userFavor : allUserFavor) {
            // 持久化用户收藏数据
            userFavorService.updateUserFavorStatis(userFavor);
        }

        System.out.println("---------Redis数据持久化Ending------------");
    }



}
